Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

197
Vistas
¿Por qué Typescript + VS Code muestra el tipo "cualquiera" con InstanceType?

No puedo reproducir esto en TS Playground. Tengo un método que devuelve una instancia:

 class Base { static selectOne<T extends typeof Base>(this: T): InstanceType<T> {} } class Foo extends Base {} class Bar extends Base {}

Esto generalmente funciona bien con VS Code IntelliSense, por ejemplo:

 const foo = Foo.selectOne(); // foo is type "Foo"

Sin embargo, si tengo una unión de clases, deja de funcionar:

 const foo = (Foo as typeof Foo | typeof Bar).selectOne(); // foo is type "any"

Este ejemplo funciona en TS Playground , muestra Foo | Bar , así que probablemente hay algo raro con mis clases. Como solución alternativa, necesitaba agregar el tipo de instancia a la clase:

 class Base { static selectOne<T extends typeof Base>(this: T): T['instanceType'] {} static instanceType: Base; } class Foo extends Base { static instanceType: Foo; } class Bar extends Base { static instanceType: Bar; }

¿Cuáles son algunas de las posibles razones por las que InstanceType devuelve any ? Ya pasé varios días tratando de depurar esto. No puedo compartir un ejemplo reproducible porque hay cientos de archivos.

Base tsconfig.json:

 { "compilerOptions": { "target": "esnext", "module": "esnext", "moduleResolution": "node", "allowJs": true, "noEmit": true, "noEmitHelpers": true, "strict": true, "isolatedModules": true, "esModuleInterop": true, "skipLibCheck": true, "baseUrl": "./", "noImplicitAny": true, "noImplicitOverride": true, "strictNullChecks": true, "useUnknownInCatchVariables": true, "resolveJsonModule": false, "types": ["node"], "experimentalDecorators": true, "noErrorTruncation": true, }, "exclude": [ "./node_modules", "./build", ], }
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda